Multi-user applications, such as shared whiteboards, collaborative document editing, immersive 3D virtual environments, MUDs, and games are characterized by the need to exchange real-time information among the participating users. Typically, each user generates information that must be disseminated to one or more of the other participants. Traditionally, multi-user applications have been scheduled in advance and have had the benefit of accessing powerful server and bandwidth resources. These computational and bandwidth resources have facilitated the exchange of information among a large number of users.
When a multi-user application must be established on a spontaneous or ad hoc basis, these extensive computational and bandwidth resources are generally not available. For example, users may bring portable computers to a conference room and spontaneously establish a multi-user application session over a low-bandwidth wireless LAN. Similarly, users may connect to the Internet from their personal workstations via low-bandwidth dialup (telephone) links and initiate a multi-user application. In these situations, no one participant host possesses enough computational resources to support all users.
This combination of resource constraints poses two requirements on the multi-user application. First, each user cannot broadcast information to every other user because bandwidth is a limited resource. Instead, information can only be sent to the users who are specifically interested in receiving that data. Second, the computational overhead used to manage the bandwidth efficiently (e.g. to determine where data should be sent) must be minimized because the client hosts are not sufficiently powerful and because there is no high-power server resource available in the system.
Therefore, a need exists for a method and system for constructing data distribution lists on behalf of each participating user while limiting the computational overhead required to build those lists. By achieving these requirements (minimizing bandwidth and minimizing management computation) we can enable the deployment of large multi-user applications over low-bandwidth, low-computation systems.